Sensor subsystems in mobile computing devices (MCD) must be implemented in an energy efficient way in order to guarantee, for example, long battery life. The sensors in the MCD are often connected to application processors via a digital interface. Waking the application processor to read each result of a measurement of a sensor is not energy efficient enough for continuously running applications, such as step counters for fitness applications. Today, sensors implement sensor data buffers, for example, in the form of a FIFO memory, to buffer the measured data. The application processor reads the collected measured data during a wake-up cycle. If a sensor measures more than one measured variable, these are preferably stored in a common sensor data buffer, so that information such as sequence and, if necessary, concurrency of data from different sensors is retained. For example, in one sensor, acceleration and rotational speed may be measured. FIG. 1 shows a sensor system of this type in an MCD.
In a sensor which may measure multiple measured variables, often only a subset of the available measured variables is needed. Therefore, often only a subset of the measured variables is detected and recorded in the sensor data buffer. It is possible that the subsets of the determined and saved measured variables deterministically change, as, for example, in measured variables with different sampling frequencies. It is possible that the subset of the determined and to be saved measured variables does not change deterministically, as, for example, is the case when the MCD does not need a sensor variable for a specific time frame.
In order to cover the varying subset of the measured variable, some of the present solutions retain memory space for all possible measured variables in the sensor data buffer. FIG. 2A shows an example of this as type A. A sensor data buffer structure is shown which respectively reserves 6 bytes for gyroscope and accelerometer data. The measured data are designated with sequential numbers, e.g., G5(6) means the 5th sample from the gyroscope having a length of 6 bytes. The memory slots designated with U are not used. The example shows a sensor data buffer content with 8 samples from the gyroscope and 2 samples from the accelerometer. In the example, the gyroscope has four times the data rate of the accelerometer.
Other solutions in the related art optimize the memory space usage, in that they define a convention as to how the data are stored in the memory. The same example is used in FIG. 2B as type B. In this case, the MCD must implicitly know the sequence in which the data are recorded.
Deviations therefrom are not possible.
The previously described type A sensor data buffer has the shortcoming that often the memory space is only partially used. This leads to the fact that the application processor of the MCD must be wakened more often than would be necessary if the entire available memory space were used. Using the type B sensor data buffer, scenarios with deterministic changes of the subset of the measured variables may be efficiently implemented. For each non-deterministic change, however, the sensor data buffer must be deleted and data are lost. In addition, there is the risk that the synchronization between the sensor data buffer and the MCD is lost, which may easily lead to data integrity errors.
In both types A and B, the sensor data buffer must be deleted when sensor parameters are changed.
In both types A and B, the synchronization of the data in the sensor data buffer with external data is complex. This may, however, be necessary, e.g. when a gyroscope must be synchronized with a camera for electronic image stabilization.